package qc.module.qms.algorithm.NumericCalc.dto;

import lombok.Data;
import qc.common.core.enums.qms.QmsPointTimeSegmentEnum;
import qc.common.core.enums.qms.QmsQueryPointDataTimeRangeTypeEnum;

/**
 * QMS数值计算点号之间关联关系DTO，细化到每个点号(+时段类型)关联的输入点号(+时段类型、取值时间设置)
 *
 * @author QuCheng Tech
 * @since 2025/9/30
 */
@Data
public class QmsNumericCalcPointRelation {
    /**
     * 点号ID
     */
    private String pointid;
    /**
     * 点号时段类型
     */
    private QmsPointTimeSegmentEnum tmseg;
    /**
     * 关联的作为计算输入数据的点号ID
     */
    private String inputPointid;
    /**
     * 关联的作为计算输入数据的点号时段类型
     */
    private QmsPointTimeSegmentEnum inputTmseg;
    /**
     * 查询点号数据时间类型;对应时间点、最近一条、时间段数据
     */
    private QmsQueryPointDataTimeRangeTypeEnum tmrange;
    /**
     * 查询点号数据起始时间偏移
     */
    private Integer tmbeginoffset;
    /**
     * 不包含起始时间点
     */
    private Boolean excludebegintm;
    /**
     * 查询点号数据截止时间偏移
     */
    private Integer tmendoffset;
    /**
     * 不包含截止时间点；一般应配置为true（不包含截止时间点）；
     * 比如：计算目标为日数据，2025-9-27；提取输入数据如为小时/实时数据，提取输入数据的时间段为：2025-9-27 00:00:00~2025-9-28 00:00:00
     */
    private Boolean excludeendtm;
    /**
     * 是否需要起始时间最近一条数据
     */
    private Boolean needbegintmlatest;
    /**
     * 起始时间最近一条数据最长时段数;
     * 为0表示不往前取数据，只取开始时间点的数据
     * 为负值表示不限制往前的时间，取不大于开始时间点的最新一条数据
     * 为正整数表示限制往前的时段数
     */
    private Integer begintmlatestoffset;
}
